﻿using System.ServiceModel;
using Collab.Services.Remote.Entities;

namespace Collab.Services.Remote.Contracts
{
    [ServiceContract(Namespace = "http://collab.codeplex.com/2010/10")]
    public interface IRemoteCollaborationCallback : IRemoteCollaborationEvents
    {
        [OperationContract(IsOneWay = true)]
        void RaiseChangePublished(BufferUpdate update);

        [OperationContract(IsOneWay = true)]
        void RaiseUserConnected(User user);

        [OperationContract(IsOneWay = true)]
        void RaiseUserDisconnected(User user);

        [OperationContract(IsOneWay = true)]
        void RaiseFileChunkReceived(FileChunk fileChunk);

        [OperationContract(IsOneWay = true)]
        void RaiseUserStatusReceived(UserStatus status);

        [OperationContract(IsOneWay = true)]
        void RaiseOpenedSolution(Solution solution);

        [OperationContract(IsOneWay = true)]
        void RaiseFileAdded(AddedFileInformation fileInformation);

        [OperationContract(IsOneWay = true)]
        void RaiseFileRequested(FileRequest fileRequest);
    }
}
